// +------------------------------------------------
// | threadpool.h 
// | 线程 + 锁 + 队列 实现的线程池 
// | hatsusakana@gmail.com 
// +------------------------------------------------

#ifndef THREADPOOL_H
#define THREADPOOL_H

typedef struct ThreadPool ThreadPool;

#ifdef __cplusplus
extern "C" {
#endif

/** 创建一个线程池 **/
extern ThreadPool *thpool_create (size_t num);

/** 设置缓存队列最大长度 **/
extern void thpool_setqueuenum (ThreadPool *pool, size_t num);

/** 添加一条线程 **/
extern int thpool_join (ThreadPool *pool, void (*cb)(void *), void *p);

/** 等待所有线程运行完毕 **/
extern void thpool_wait (ThreadPool *pool);

/** 释放线程池(会等待所有线程释放) **/
extern void thpool_destroy (ThreadPool **pool);

#ifdef __cplusplus
}
#endif

#endif
